package com.project.bookstore.user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.project.bookstore.user.domain.User;
import com.project.bookstore.user.pojo.*;

import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {

    //修改个人资料
    int updatePersonalData(UserPersonalDataVO user);

    //修改密码
    int updatePassword(Long id, String password);

    //查询密码
    String selectPasswordById(Long id);

    //通过用户名查询密码
    String selectPasswordByUsername(String username);

    //个人中心 info 界面
    MineInfoVO selectMineInfo(Long id);

    UserPersonalDataVO getPersonalData(Long id);

    //根据用户名查询用户权限
    UserDetailDO selectUserDetail(String username);

    /**
     * 通过用户名查找用户ID
     * @param username 用户名
     * @return 用户ID
     */
    Long selectIdByUsername(String username);


    /**
     * 登录先关更新
     * @param userLoginDO 用户登录需要更新的字段数据
     * @return 更新行数
     */
    int updateLoginByUsername(UserLoginDO userLoginDO);

    /**
     * 更新手机
     * @param id 用户ID
     * @param phone 手机
     * @return 受影响行数
     */
    int updatePhoneById(Long id, String phone);

    /**
     * 更新邮箱
     * @param id 用户ID
     * @param email 邮箱
     * @return 受影响行数
     */
    int updateEmailById(Long id, String email);

    //获取手机号
    String selectPhoneById(Long id);


    //获取邮箱
    String selectEmailById(Long id);

    /**
     * 登录后首部菜单栏个人信息
     * @param id 用户id
     * @return 昵称、头像
     */
    UserMenuPersonalSourceVO selectNickAvatarById(Long id);

    /**
     * 查询
     * @param userId
     * @return
     */
    int selectNickChange(Long userId);


    /**
     * 插入新用户
     * @param entity
     * @return
     */
    int myInsert(User entity);

    int updateNickById(Long userId, String nick);
}
